<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        div {
            width: 100%;
            margin: 0 auto;
            max-width: 640px;
            min-width: 320px;
        }

        h3 {
            width: 100%;
            height: 1rem;
            background-color: #f40;
            font-size: 0.2rem;
            color: black;
        }
        .second_box{
            height: 1.5rem;
            width: 100%;
        }
        #second {
            position: relative;
            background-color: rgb(4, 3, 4);
        }

        h4 {
            width: 100%;
            height: 1.5rem;
            font-size: 0.3rem;
            color: red;
        }

        p {
            font-size: 1rem;
        }
    </style>

    <script>
        //designWidth:设计稿的实际宽度值，需要根据实际设置
        //maxWidth:制作稿的最大宽度值，需要根据实际设置
        //这段js的最后面有两个参数记得要设置，一个为设计稿实际宽度，一个为制作稿最大宽度，例如设计稿为750，最大宽度为750，则为(750,750)
        ; (function (designWidth, maxWidth) {
            var doc = document,
                win = window,
                docEl = doc.documentElement,
                remStyle = document.createElement("style"),
                tid;

            function refreshRem() {
                var width = docEl.getBoundingClientRect().width;
                maxWidth = maxWidth || 540;
                width > maxWidth && (width = maxWidth);
                var rem = width * 100 / designWidth;
                remStyle.innerHTML = 'html{font-size:' + rem + 'px;}';
            }

            if (docEl.firstElementChild) {
                docEl.firstElementChild.appendChild(remStyle);
            } else {
                var wrap = doc.createElement("div");
                wrap.appendChild(remStyle);
                doc.write(wrap.innerHTML);
                wrap = null;
            }
            //要等 wiewport 设置好后才能执行 refreshRem，不然 refreshRem 会执行2次；
            refreshRem();

            win.addEventListener("resize", function () {
                clearTimeout(tid); //防止执行两次
                tid = setTimeout(refreshRem, 300);
            }, false);

            win.addEventListener("pageshow", function (e) {
                if (e.persisted) { // 浏览器后退的时候重新计算
                    clearTimeout(tid);
                    tid = setTimeout(refreshRem, 300);
                }
            }, false);

            if (doc.readyState === "complete") {
                doc.body.style.fontSize = "16px";
            } else {
                doc.addEventListener("DOMContentLoaded", function (e) {
                    doc.body.style.fontSize = "16px";
                }, false);
            }
        })(640, 640);
    </script>
</head>

<body>
    <div id="a">
        <div id="first">
            <h3>rem布局</h3>
        </div>
        <div class="second_box">
            <div id="second">
                <h4>这是一些文字</h4>
            </div>
        </div>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
        <p>写一些文字</p>
    </div>

</body>
<script>
    window.onload = function () {
        searchEffect();
    }
    function searchEffect() {
        /*头部搜索块的js效果*/
        /*1.获取当前banner的高度*/
        var banner = document.querySelector("#first");
        var bannerHeight = banner.offsetHeight;
        /*获取header搜索块*/
        var search = document.querySelector("#second");
        /*2.获取当前屏幕滚动时，banner滚动出屏幕的距离*/
        window.onscroll = function () {
            var offsetTop = document.body.scrollTop;
            /*3.计算比例值，获取透明度，设置背景颜色的样式*/
            //var opacity = 0;
            /*判断，如果当banner还没有完全 滚出屏幕，那么才有必要计算透明度和设置透明度*/
            if (offsetTop > bannerHeight) {
                /*  opacity = offsetTop / bannerHeight;
                 /*设置样式*/
                /*  search.style.backgroundColor = "rgba(233,35,34," + opacity + ")"; */
                search.style.position = "fixed";
                search.style.top = 0;
                search.style.position = 0;
            }
            else{
                search.style.position = "relative";
            }
        }
    }
</script>

</html>